Article by: Manish Methani
Last Updated: October 26, 2021 at 10:04am IST
Encapsulation in Java is one of the most important feature of Object Oriented Programming. It is a mechanism of wrapping the variables and methods together as a single unit. Wrapping the variables and methods is the concept which you have to understood to understand Encapsulation in Java. Lets take one example,
public class SuperClass { public int abc; ... } public class SubClass { public static void main (String [] args) { SuperClass superClass = new SuperClass(); superClass.abc = -5; // Legal but bad!! } }
Now suppose 10 other programmers in your company are using your class and that public variable abc. In some days, you realised that you dont want that anyone should use it but other programmers want to change the value of variable abc according to their need.
One wants to set the value of abc to 7, other wants to change the value of abc as 8. Then what will you do in that case? This example is at very basic level but may be useful in companies when you work.
So, if you dont want anyone to use it, You change the modifier to private. But all the extended subclasses who were using that variable will receive the compilation error. Because abc variable is now private variable. So all other programmers will give you an angry look :) Because you made your variable private and they are getting an errors.
Encapsulation in Java is nothing but the way of writing the program in a secure manner. Everything will not be done automatically. You have to write code for this but in some different way so that it fulfils the promising security feature of OOPs. See this program again now ...
class SuperClasss { // Protect the variable; only an instance // of SuperClass can access it private int abc; // Provide public Getter and Setter methods public int getSize() { return abc; } public void setSize(int newSize) { abc = newSize; } } public class SubClass { public static void main (String []args) { SuperClasss supers = new SuperClasss(); supers.setSize(10); int a = supers.getSize(); } }
In previous program we initialised the value of abc directly. But using Encapsulation what we did is we created Setter and Getter methods. This helps other programmers and you also because if any other programmer wants to change the value of abc he has to call the setSize() method to set some value and get it using getSize(). You as a SuperClass also have to perform the same steps. Security here in this case is ,"Variable abc will not be accessed directly. It is private.
So if you want to change the value of abc you have to use instance methods set & get. This is nothing but Encapsulation in Java.
So instead of allowing subclass users to use abc variable of superclass, you have to write setter & getter methods and have to set the values during the creation of an object.